package com.smart.community.region.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/**
 * 批量生成费用记录DTO
 * 
 * @author Wu.Liang
 * @version 1.0.0
 * @since 2025-01-30
 */
@Data
@Schema(description = "批量生成费用记录DTO")
public class BatchGenerateFeeRecordDTO implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * 店铺ID列表
     */
    @NotEmpty(message = "店铺ID列表不能为空")
    @Schema(description = "店铺ID列表", example = "[1, 2, 3]")
    private List<Long> shopIds;
    
    /**
     * 费用类型：PROPERTY-物业费，WATER-水费，ELECTRIC-电费，GAS-燃气费，SANITATION-卫生费
     */
    @NotNull(message = "费用类型不能为空")
    @Schema(description = "费用类型", example = "PROPERTY")
    private String feeType;
    
    /**
     * 生成月份（YYYY-MM格式）
     */
    @NotNull(message = "生成月份不能为空")
    @Schema(description = "生成月份", example = "2025-01")
    private String batchMonth;
    
    /**
     * 生成方式：STANDARD-按费用标准生成，CUSTOM-自定义金额
     * 兼容原有枚举值：AUTO-自动生成，MANUAL-手动生成
     */
    @NotNull(message = "生成方式不能为空")
    @Schema(description = "生成方式：STANDARD-按费用标准生成，CUSTOM-自定义金额", example = "STANDARD")
    private String batchMode;
    
    /**
     * 自定义金额（当batchMode为CUSTOM时使用）
     */
    @Schema(description = "自定义金额", example = "1000.00")
    private BigDecimal customAmount;
    
    /**
     * 到期日期
     */
    @Schema(description = "到期日期", example = "2025-01-31")
    private LocalDate dueDate;
    
    /**
     * 缴费状态：0-未缴费，1-已缴费，2-逾期
     */
    @Schema(description = "缴费状态", example = "0")
    private Integer paymentStatus = 0;
    
    /**
     * 备注
     */
    @Schema(description = "备注", example = "批量生成费用记录")
    private String remark;
}
